// Path to cargo executables
pub fn cargo_dir() -> PathBuf {
env::var_os("CARGO_BIN_PATH").map(PathBuf::from).or_else(|| {
- env::current_exe().ok().as_ref().and_then(|s| s.parent())
- .map(|s| s.to_path_buf())
+ env::current_exe().ok().map(|mut path| {
+ path.pop();
+ if path.ends_with("deps") {
+ path.pop();
+ }
+ path
+ })
}).unwrap_or_else(|| {
panic!("CARGO_BIN_PATH wasn't set. Cannot continue running test")
})
use proc_macro::TokenStream;
#[proc_macro_derive(Noop)]
- pub fn noop(input: TokenStream) -> TokenStream {
- input
+ pub fn noop(_input: TokenStream) -> TokenStream {
+ "".parse().unwrap()
}
"#);
noop.build();
fn impl_by_transmogrify(&self) -> bool;
}
- #[derive(Transmogrify)]
- struct X;
+ #[derive(Transmogrify, Debug)]
+ struct X { success: bool }
fn main() {
let x = X::new();
#[proc_macro_derive(Transmogrify)]
#[doc(hidden)]
pub fn transmogrify(input: TokenStream) -> TokenStream {
- assert_eq!(input.to_string(), "struct X;\n");
-
"
impl X {
fn new() -> Self {
true
}
}
-
- #[derive(Debug)]
- struct X {
- success: bool,
- }
".parse().unwrap()
}
"#);